.text
.data
.globl static_store
.type static_store, @object
static_store:
    .long 30

.section .rodata
.LC0:
    .string "String Literal"

.section .data.rel.local,"aw"
.globl pcg
pcg:
    .quad .LC0

.align 8
.section .rodata
.LC1:
	.string	"static_store: %d at %p\n"
.LC2:
	.string	" auto_store: %d at %p\n"
.LC3:
	.string	" *pi: %d at %p\n"
.LC4:
	.string	" %s at %p\n"
.LC5:
	.string	"Quoted String"

.LC6:
    .string "Dynamic String"

.LC7:
    .string "Auto char Array"

.text
.globl main
.type main, @function
main:
    addi sp, sp, -64
    sd ra, 56(sp)
    sd s0, 48(sp)
    addi s0, sp, 48

    // auto_store:-4(s0)
    // auto_string:-20(s0)
    // pi: -28(s0)
    // pcl: -36(s0)
    li a5, 40
    sw a5, -4(s0)
    lui a5, %hi(.LC7)
    addi a1, a5, %lo(.LC7)
    addi a0, s0, -20
    call strcpy

    li a0, 4
    call malloc
    sd a0, -28(s0)
    li a5, 35
    sw a5, 0(a0)

    li a0, 15
    call malloc
    sd a0, -36(s0)

    lui a5, %hi(.LC6)
    addi a1, a5, %lo(.LC6)
    call strcpy

    lui a5, %hi(static_store)
    addi a2, a5, %lo(static_store)
    lw a1, 0(a2)
    lui a5, %hi(.LC1)
    addi a0, a5, %lo(.LC1)
    call printf

    lw a1, -4(s0)
    addi a2, s0, -4
    lui a5, %hi(.LC2)
    addi a0, a5, %lo(.LC2)
    call printf

    ld a2, -28(s0)
    lw a1, 0(a2)
    lui a5, %hi(.LC3)
    addi a0, a5, %lo(.LC3)
    call printf

    lui a5, %hi(pcg)
    addi a5, a5, %lo(pcg)
    ld a1, 0(a5)
    mv a2, a1
    lui a5, %hi(.LC4)
    addi a0, a5, %lo(.LC4)
    call printf

    addi a1, s0, -20
    mv a2, a1
    lui a5, %hi(.LC4)
    addi a0, a5, %lo(.LC4)
    call printf

    ld a1, -36(s0)
    mv a2, a1
    lui a5, %hi(.LC4)
    addi a0, a5, %lo(.LC4)
    call printf

    lui a5, %hi(.LC5)
    addi a1, a5, %lo(.LC5)
    mv a2, a1
    lui a5, %hi(.LC4)
    addi a0, a5, %lo(.LC4)
    call printf

    ld ra, 56(sp)
    ld s0, 48(s0)
    addi sp, sp, 64
    jr ra